树套树,直接线段树套 $Splay$ .
因为有区间的$k$大,不能直接用$Splay$(大佬忽视这句话),显然可以用树套树(废话)。对于每一个线段树的节点都建一棵 $Splay$ ,需要查询这个节点所代表的区间第 $k$ 大等操作时直接用 $Splay$ 来完成即可……
但是,如果不是正好的区间呢?假如询问区间横跨了两个子树区间怎么办呢?
这就需要技巧了.
下面,对于第一个操作,先贴出代码:
1 | inline void Seg_rank(int x,int l,int r,int L,int R,int Kth){ |
基本上,所有有关的操作都可以参考上面的代码段……
多说无益,直接看代码吧.
哦,对了,其实理解只需纸笔和一份正确的代码,并不要太多的讲解(感觉网上没找到很优秀的文章……)
Code:
1 |
|
本文标题:【题解】 Tyvj1730二逼平衡树 树套树 luogu3380/bzoj3196
文章作者:Qiuly
发布时间:2019年02月13日 - 00:00
最后更新:2019年03月29日 - 13:52
原始链接:http://qiulyblog.github.io/2019/02/13/[题解]luoguP1730/
许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。